{
 "cells": [
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "# 一、ndarray\n",
    "## 1. ndarray的特性\n",
    "### 多维性"
   ],
   "id": "565b8775580e8674"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-09-04T03:19:57.376817Z",
     "start_time": "2025-09-04T03:19:57.367670Z"
    }
   },
   "cell_type": "code",
   "source": "import numpy as np",
   "id": "ce9415bcdeb90eb3",
   "outputs": [],
   "execution_count": 157
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-09-04T03:19:57.412063Z",
     "start_time": "2025-09-04T03:19:57.405825Z"
    }
   },
   "cell_type": "code",
   "source": [
    "arr = np.array(5)  # 创建0维的ndarray数组\n",
    "print(arr)\n",
    "print('arr的维度：', arr.ndim)  # ndim是判断数组的维度"
   ],
   "id": "493b635759c19b3f",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5\n",
      "arr的维度： 0\n"
     ]
    }
   ],
   "execution_count": 158
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-09-04T03:19:57.455430Z",
     "start_time": "2025-09-04T03:19:57.447252Z"
    }
   },
   "cell_type": "code",
   "source": [
    "arr = np.array([1, 2, 3])  # 创建1维的ndarray数组\n",
    "print(arr)\n",
    "print('arr的维度：', arr.ndim)  # ndim是判断数组的维度"
   ],
   "id": "e6d52328058ede5b",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1 2 3]\n",
      "arr的维度： 1\n"
     ]
    }
   ],
   "execution_count": 159
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-09-04T03:19:57.481394Z",
     "start_time": "2025-09-04T03:19:57.475209Z"
    }
   },
   "cell_type": "code",
   "source": [
    "arr = np.array([[1, 2, 3], [4, 5, 6]])  # 创建2维的ndarray数组\n",
    "print(arr)\n",
    "print('arr的维度：', arr.ndim)  # ndim是判断数组的维度"
   ],
   "id": "336c7cac9142f3b8",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[1 2 3]\n",
      " [4 5 6]]\n",
      "arr的维度： 2\n"
     ]
    }
   ],
   "execution_count": 160
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "### 同质性",
   "id": "c2956115dce107c3"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-09-04T03:19:57.575251Z",
     "start_time": "2025-09-04T03:19:57.565920Z"
    }
   },
   "cell_type": "code",
   "source": [
    "arr = np.array([1, 'Hello'])\n",
    "print(arr)\n",
    "# ['1.13模块编程.12package' 'Hello']\n",
    "# 同质性：要求数组内的数据类型一致\n",
    "# 创建ndarray数组时，如果数据类型不一致，会自动转换成同一数据类型"
   ],
   "id": "ea8aeebff5cf903f",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['1' 'Hello']\n"
     ]
    }
   ],
   "execution_count": 161
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-09-04T03:19:57.624838Z",
     "start_time": "2025-09-04T03:19:57.616873Z"
    }
   },
   "cell_type": "code",
   "source": [
    "arr = np.array([1, 2, 1.1])\n",
    "print(arr)  # [1.13模块编程.12package.  2.  1.13模块编程.12package.1.13模块编程.12package]\n",
    "\n",
    "arr = np.array([1, 'Hello', 1.1])\n",
    "print(arr)  # ['1.13模块编程.12package' 'Hello' '1.13模块编程.12package.1.13模块编程.12package']"
   ],
   "id": "b69d0cf400485dc2",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1.  2.  1.1]\n",
      "['1' 'Hello' '1.1']\n"
     ]
    }
   ],
   "execution_count": 162
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "# 二、ndarray属性\n",
    "- 1. ndarray.shape 数组的形状 行数和列数（或更高维度的尺寸）\n",
    "\n",
    "- 2. ndarray.size 数组中的元素总数\n",
    "\n",
    "- 3. ndarray.itemsize 单个元素占用的内存字节数\n",
    "\n",
    "- 4. ndarray.dtype 数组中元素的数据类型\n",
    "\n",
    "- 5. ndarray.ndim 数组维度\n",
    "\n",
    "- 6. ndarray.T 数组转置\n",
    "\n",
    "- 7. ndarray.nbytes 数组所占内存字节数,数组总内存占用量：size*itemsize\n"
   ],
   "id": "ad35473c981c6947"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-09-04T03:19:57.670357Z",
     "start_time": "2025-09-04T03:19:57.659445Z"
    }
   },
   "cell_type": "code",
   "source": [
    "arr = np.array(5)\n",
    "print(arr)\n",
    "\n",
    "# 数组的形状\n",
    "print('数组的形状：', arr.shape)  # 数组的形状： ()\n",
    "print('数组的元素总数：', arr.size)  # 数组元素的总数： 1.13模块编程.12package\n",
    "print('数组维度：', arr.ndim)  # 数组维度： 0\n",
    "\n",
    "arr = np.array([[1, 2, 3], [4, 5, 6]])\n",
    "print('数组的形状：', arr.shape)  # 数组的形状： (2, 3)\n",
    "print('数组的元素总数：', arr.size)  # 数组元素的总数： 6\n",
    "print('数组维度：', arr.ndim)  # 数组维度： 2\n",
    "print('元素的数据类型：', arr.dtype)  # 元素的数据类型： int64\n",
    "\n",
    "arr = np.array([1, 1.2])\n",
    "print('元素的数据类型：', arr.dtype)  # 元素的数据类型： float64\n",
    "\n",
    "arr = np.array([1, 1.2, 'hello'])\n",
    "print(arr)\n",
    "print('元素的数据类型：', arr.dtype)  # 元素的数据类型： <U32"
   ],
   "id": "dd9ccad5b9b9239f",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5\n",
      "数组的形状： ()\n",
      "数组的元素总数： 1\n",
      "数组维度： 0\n",
      "数组的形状： (2, 3)\n",
      "数组的元素总数： 6\n",
      "数组维度： 2\n",
      "元素的数据类型： int64\n",
      "元素的数据类型： float64\n",
      "['1' '1.2' 'hello']\n",
      "元素的数据类型： <U32\n"
     ]
    }
   ],
   "execution_count": 163
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-09-04T03:19:57.700452Z",
     "start_time": "2025-09-04T03:19:57.686367Z"
    }
   },
   "cell_type": "code",
   "source": [
    "arr = np.array([1, 2, 3])\n",
    "print('转置', arr.T)\n",
    "\n",
    "arr = np.array([[1, 2, 3], [4, 5, 6]])\n",
    "print('转置', arr.T)"
   ],
   "id": "8d06590d2248772",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "转置 [1 2 3]\n",
      "转置 [[1 4]\n",
      " [2 5]\n",
      " [3 6]]\n"
     ]
    }
   ],
   "execution_count": 164
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "# 三、ndarray创建\n",
    "1. 基础构造：适用于手动构造小规模数组或者复制已有数据 -- np.array(),np.copy()\n",
    "2. 预定义形状填充：用于快速初始化固定形状的数组（如全0占位、全1初始化） -- np.zeros(),np.ones(),np.full()\n",
    "3. 基于数值范围生成：生成数值序列，用于模拟时间序列、坐标网格等 -- np.arange(),np.linspace(),np.logspace()\n",
    "4. 特殊矩阵生成：数学运算专用（如线性代数中的单位矩阵）-- np.eye(),np.diag()\n",
    "5. 随机数组生成：模拟实验数据、初始化神级网络权重等场景 -- np.random.rand(),np.random.randint(),np.random.normal()\n",
    "6. 高级构造方法：处理非结构化数据（如文件、字符串）或通过函数生成复杂数组 -- np.fromfunction(),np.fromiter(),np.fromstring(),np.fromfile(),np.loadtxt()"
   ],
   "id": "9d628856952e6303"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-09-04T03:19:57.731878Z",
     "start_time": "2025-09-04T03:19:57.718313Z"
    }
   },
   "cell_type": "code",
   "source": [
    "arr1 = np.array([[1, 2, 3], [4, 5, 6]])\n",
    "print(arr1)\n",
    "arr2 = np.copy([[1, 2, 3], [4, 5, 6], [7, 8, 9]])\n",
    "print(arr2)"
   ],
   "id": "1585786977afc315",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[1 2 3]\n",
      " [4 5 6]]\n",
      "[[1 2 3]\n",
      " [4 5 6]\n",
      " [7 8 9]]\n"
     ]
    }
   ],
   "execution_count": 165
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "### 区分带括号和不带括号：\n",
    "带括号：属于方法（命令），需要计算或执行\n",
    "\n",
    "不带括号：是属性，无需继续执行"
   ],
   "id": "2e0f5e6a5af673cc"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-09-04T03:19:57.766581Z",
     "start_time": "2025-09-04T03:19:57.751144Z"
    }
   },
   "cell_type": "code",
   "source": [
    "list1 = [1, 2, 3, 0]\n",
    "arr = np.array(list1, dtype=float, order='A')\n",
    "print(arr)"
   ],
   "id": "d1d4dbd2c1e2330d",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1. 2. 3. 0.]\n"
     ]
    }
   ],
   "execution_count": 166
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-09-04T03:19:57.809521Z",
     "start_time": "2025-09-04T03:19:57.800969Z"
    }
   },
   "cell_type": "code",
   "source": [
    "arr1 = np.copy(arr)  # 元素跟原始的数组一样，但是存储位置不同，代表不是同一个数组\n",
    "print(arr1)\n",
    "arr1[0] = 8  # 修改arr1=从arr拷贝过来，不影响原始的数组arr\n",
    "print(arr)\n",
    "print(arr1)"
   ],
   "id": "753b2050471e6b6f",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1. 2. 3. 0.]\n",
      "[1. 2. 3. 0.]\n",
      "[8. 2. 3. 0.]\n"
     ]
    }
   ],
   "execution_count": 167
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-09-04T03:19:57.836445Z",
     "start_time": "2025-09-04T03:19:57.828626Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 预定义形状\n",
    "# 全0 全1 未初始化 固定值\n",
    "arr = np.zeros((2, 3), dtype=int)  # 创建二维数组，2行3列\n",
    "print(arr)\n",
    "print(arr.dtype)"
   ],
   "id": "e4436db39a5b6ef0",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[0 0 0]\n",
      " [0 0 0]]\n",
      "int64\n"
     ]
    }
   ],
   "execution_count": 168
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-09-04T03:19:57.860599Z",
     "start_time": "2025-09-04T03:19:57.850356Z"
    }
   },
   "cell_type": "code",
   "source": [
    "arr = np.zeros((200,))  # 一维\n",
    "print(arr)"
   ],
   "id": "cb14bd8b6c639684",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.\n",
      " 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.\n",
      " 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.\n",
      " 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.\n",
      " 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.\n",
      " 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.\n",
      " 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.\n",
      " 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.\n",
      " 0. 0. 0. 0. 0. 0. 0. 0.]\n"
     ]
    }
   ],
   "execution_count": 169
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-09-04T03:19:57.891889Z",
     "start_time": "2025-09-04T03:19:57.882137Z"
    }
   },
   "cell_type": "code",
   "source": [
    "arr = np.ones((2, 3), dtype=int)\n",
    "print(arr)"
   ],
   "id": "f1fedc06a3cead8f",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[1 1 1]\n",
      " [1 1 1]]\n"
     ]
    }
   ],
   "execution_count": 170
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-09-04T03:19:57.917841Z",
     "start_time": "2025-09-04T03:19:57.909889Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 未初始化\n",
    "arr = np.empty((2, 3), dtype=int)  # 每次执行，输出值都不一样，具有随机性\n",
    "print(arr)"
   ],
   "id": "2fbf65bdf6d25880",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[1 2 3]\n",
      " [4 5 6]]\n"
     ]
    }
   ],
   "execution_count": 171
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-09-04T03:19:57.950609Z",
     "start_time": "2025-09-04T03:19:57.944854Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 固定值\n",
    "arr = np.full((2, 3), 5)  # 创建二维数组，2行3列，值都为5\n",
    "print(arr)"
   ],
   "id": "c64f3c3116496162",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[5 5 5]\n",
      " [5 5 5]]\n"
     ]
    }
   ],
   "execution_count": 172
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-09-04T03:19:58.010528Z",
     "start_time": "2025-09-04T03:19:57.997916Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# xxx_like 模仿数组结构， 预定义形状\n",
    "arr1 = np.zeros_like(arr)\n",
    "print(arr1)\n",
    "\n",
    "arr2 = np.empty_like(arr)\n",
    "print(arr2)\n",
    "\n",
    "arr3 = np.ones_like(arr)\n",
    "print(arr3)\n",
    "\n",
    "arr4 = np.full_like(arr, 2025)\n",
    "print(arr4)"
   ],
   "id": "25458140e4f4f524",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[0 0 0]\n",
      " [0 0 0]]\n",
      "[[0 0 0]\n",
      " [0 0 0]]\n",
      "[[1 1 1]\n",
      " [1 1 1]]\n",
      "[[2025 2025 2025]\n",
      " [2025 2025 2025]]\n"
     ]
    }
   ],
   "execution_count": 173
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-09-04T03:19:58.046019Z",
     "start_time": "2025-09-04T03:19:58.035076Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 等差数列 1.13模块编程.12package,3,5,7,9\n",
    "arr = np.arange(1, 10, 2)  # 创建数组，包含1-10，步长为2\n",
    "print(arr)\n",
    "\n",
    "arr1 = np.arange(10, 20, 2)\n",
    "print(arr1)\n",
    "\n",
    "arr3 = [arr, arr1]\n",
    "print(arr3)\n",
    "\n",
    "print(arr + arr1)"
   ],
   "id": "40ec7aacf233151d",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1 3 5 7 9]\n",
      "[10 12 14 16 18]\n",
      "[array([1, 3, 5, 7, 9]), array([10, 12, 14, 16, 18])]\n",
      "[11 15 19 23 27]\n"
     ]
    }
   ],
   "execution_count": 174
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-09-04T03:19:58.087226Z",
     "start_time": "2025-09-04T03:19:58.078613Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 等间隔数列\n",
    "app = np.linspace(0, 10, 5, dtype=float)  # 创建数组，包含0-10，5个元素, 等步长\n",
    "print(app)"
   ],
   "id": "498fe0870a03047b",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[ 0.   2.5  5.   7.5 10. ]\n"
     ]
    }
   ],
   "execution_count": 175
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-09-04T03:19:58.176034Z",
     "start_time": "2025-09-04T03:19:58.168505Z"
    }
   },
   "cell_type": "code",
   "source": [
    "app = np.arange(0, 10, 2.5, dtype=float)\n",
    "print(app)"
   ],
   "id": "464b35e8cbc41242",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.  2.5 5.  7.5]\n"
     ]
    }
   ],
   "execution_count": 176
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-09-04T03:19:58.232628Z",
     "start_time": "2025-09-04T03:19:58.222750Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 对数间隔数列\n",
    "arr = np.linspace(0,4,2)\n",
    "print(arr)\n",
    "app = np.logspace(0, 4, 2, base=2, dtype=float) # base=2, 2的0次方，2的4次方\n",
    "print(app)\n",
    "\n",
    "app1 = np.logspace(0, 4, 2) # base 不写，默认是10.0\n",
    "print(app1)"
   ],
   "id": "920a1aac67201602",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0. 4.]\n",
      "[ 1. 16.]\n",
      "[1.e+00 1.e+04]\n"
     ]
    }
   ],
   "execution_count": 177
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-09-04T03:19:58.258952Z",
     "start_time": "2025-09-04T03:19:58.252911Z"
    }
   },
   "cell_type": "code",
   "source": "# 011-numpy-ndarray-创建3",
   "id": "4718fdef12e51ce",
   "outputs": [],
   "execution_count": 178
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-09-04T03:19:58.296473Z",
     "start_time": "2025-09-04T03:19:58.281533Z"
    }
   },
   "cell_type": "code",
   "source": [
    "ndarray = np.eye(3)\n",
    "print(ndarray)\n",
    "\n",
    "arr = np.reshape(np.arange(1, 10), (3, 3))\n",
    "print(arr)\n",
    "print(arr.ndim)\n",
    "\n",
    "# asarray\n",
    "li = [1,2,3]\n",
    "arr = np.asarray(li)\n",
    "print(arr)\n",
    "\n",
    "tp = (4,5,6)\n",
    "print(tp)\n",
    "arr = np.asarray(tp)\n",
    "print(arr)"
   ],
   "id": "4cc9ab5ae69f9cc9",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[1. 0. 0.]\n",
      " [0. 1. 0.]\n",
      " [0. 0. 1.]]\n",
      "[[1 2 3]\n",
      " [4 5 6]\n",
      " [7 8 9]]\n",
      "2\n",
      "[1 2 3]\n",
      "(4, 5, 6)\n",
      "[4 5 6]\n"
     ]
    }
   ],
   "execution_count": 179
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-09-04T06:27:09.530797Z",
     "start_time": "2025-09-04T06:27:09.515202Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 标准正态分布\n",
    "arr = np.random.randn(1, 2, 3)\n",
    "print(arr)\n",
    "print(arr.ndim)\n",
    "print(arr.shape)\n",
    "\n",
    "# 普通正态分布\n",
    "arr = np.random.normal(175, 10, (10,)) # 创建一个均值175，方差10，10行1列的数组\n",
    "print(arr)\n",
    "print(arr.ndim)\n",
    "print(arr.shape)"
   ],
   "id": "a4dc4146d0418258",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[[ 0.58307479  0.00172772 -1.26746332]\n",
      "  [-0.33973426 -0.19242319 -0.37850491]]]\n",
      "3\n",
      "(1, 2, 3)\n",
      "[180.45593814 172.39647906 171.77586478 161.10409186 174.37033001\n",
      " 177.5522117  183.96678598 179.81992979 188.34428965 174.87246996]\n",
      "1\n",
      "(10,)\n"
     ]
    }
   ],
   "execution_count": 186
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-09-04T06:38:22.651732Z",
     "start_time": "2025-09-04T06:38:22.479931Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 打印100个点的正态分布  -- randn 标准正态分布（高斯分布）\n",
    "# 均值为0，标准差为1\n",
    "data = np.random.randn(1000)\n",
    "print(data)\n",
    "import matplotlib.pyplot as plt\n",
    "plt.hist(data)\n",
    "\n",
    "# rand 均匀分布的随机数，在[0,1.13模块编程.12package)区间内均匀分布\n",
    "data1 = np.random.rand(1000)\n",
    "plt.hist(data1)"
   ],
   "id": "ad92ca2073f8db01",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[-1.16547907  0.00792183  0.57611405 -0.48990654  1.76860968  0.11219234\n",
      " -0.50026206 -1.21975759  0.13989139  0.62208904  0.45816775  0.28491932\n",
      "  2.19690216  1.11351572 -2.04943524  0.69998034 -1.1808847   0.83365719\n",
      " -0.51604814 -0.12284908 -0.28292221 -0.33716398  0.31108909 -1.06196515\n",
      " -1.90690336  1.15385877 -3.16739864 -0.68051388 -0.17792087 -0.28732427\n",
      " -1.24246147 -0.95091487  0.10389382 -2.12881242  0.37532244  1.0558531\n",
      "  0.1804445   0.54840083  0.48394991  0.99499268  0.56142272 -0.82910084\n",
      "  0.80091797 -2.27298512 -0.16818084  0.68551641  0.70419839  0.43288314\n",
      "  1.27723876  0.89715367 -2.11410301 -0.55790336 -0.3890681  -0.0904174\n",
      " -0.45927512  1.55955734  0.4044818  -0.73962216 -0.15392782  0.806309\n",
      "  1.48597097  1.17439937  0.1218076  -0.80816784  0.41991767 -0.56205023\n",
      "  0.98533033  0.40014083  0.78565592 -0.75215515  1.91065734  0.63112262\n",
      " -0.12421322  0.24646645  0.25078776  0.66761346  0.31689248 -0.50935022\n",
      " -2.38954116 -1.20939462 -0.07835068 -0.04513013 -0.45241937  0.43662042\n",
      "  0.49814444  0.47291276 -0.4521078  -1.74021154 -1.21917669 -0.33433221\n",
      " -0.42764062 -0.32760705  0.67827537 -0.19267213  1.94216049  1.44027976\n",
      " -0.86453642  1.19542372 -0.20582007 -1.15037912  0.21610806 -0.52165888\n",
      "  0.12154233  0.5682883   1.31064852 -0.87734074 -0.79640702  1.14883949\n",
      "  0.18914008  1.56111614  0.29334735 -0.7804871  -0.00776438 -0.49433712\n",
      " -1.68926289  0.74595972  0.08480469 -0.18521158  0.33936779  0.62751055\n",
      "  0.51233061 -2.11161546  1.41899576 -0.62985149  0.49808305 -0.14175635\n",
      " -1.55197142  0.20372597 -0.77437886  0.71372964 -0.47430375  0.24298024\n",
      " -0.01596148  0.09169814 -0.84997535 -0.70662125  0.14916855  0.44565046\n",
      "  0.63195972  0.56378182 -1.49566124 -0.74455934  0.31502941 -1.67500384\n",
      " -0.36115838  0.91465391  2.14509721  1.19241895 -0.04779546 -0.26993261\n",
      " -1.2199488  -0.80638021 -0.21252062 -0.7660991   1.48126671  0.54522456\n",
      "  0.31674319 -1.82167606  0.8930556   0.12269668  0.45882961 -0.41559865\n",
      " -1.13787719  0.53515774  0.07655766  0.59213076  0.62271309  0.01645188\n",
      "  0.94596458  0.14507845 -0.26093514  0.56952809 -0.66829143  0.38747624\n",
      " -0.73192389  0.64334795  0.36346131 -1.67242877 -0.49578121 -0.24215192\n",
      "  1.11381278  1.18763045 -0.9503052   0.56655326 -0.6554752   1.01819309\n",
      " -0.61643603 -1.12386544  0.9173226  -0.64557677 -0.18535359  0.03414883\n",
      "  0.10893364 -0.97608932  0.66070045  0.58087181  1.29063731 -1.24766748\n",
      " -0.09725651 -1.54236257  0.92999697 -0.11509322 -0.63569359  0.65699593\n",
      " -0.71494754  0.01439746  1.01633997  0.37289207  0.43867303  1.00652502\n",
      " -0.28622412 -0.83465824  0.46165948  0.00484517  1.1497023   1.7186886\n",
      "  1.35188022  1.11629546  0.34547186 -0.36017408 -1.83897524  1.38512115\n",
      " -2.12622566  0.16933272 -0.40048836  0.05458769  0.48196321 -0.9298512\n",
      " -0.93626837  0.75176918  0.60693139  0.40683429 -2.43122017  2.58263114\n",
      "  0.91455969  0.55584866  0.22012395  0.78516421  0.35396113 -0.68993525\n",
      " -0.40758728 -0.51711014  0.54561659 -0.3377652  -0.88055998  0.08698821\n",
      "  0.02944919 -1.22600924 -0.2220121   1.60057336 -1.07527739  1.05158958\n",
      " -0.27497613 -1.12892125  1.0391768   0.36732327 -0.63541513 -0.69278558\n",
      "  0.0554957  -0.53353165 -0.31607509 -0.88768895 -1.42501144 -0.85503381\n",
      " -0.52126767 -1.21849361  0.11619208  0.66522225 -0.97254454 -0.4928888\n",
      "  0.49375474  0.43406856 -0.30991587 -0.09290832  0.42866987  0.44535319\n",
      " -0.11880544  0.73042423 -0.13295633 -0.22172887  0.0499403  -2.92262393\n",
      " -0.83654843  0.87581001 -0.90202722  0.53034985  1.18541924  0.25925603\n",
      " -0.67025589 -0.81389307  2.62034329  0.32121977 -1.4702985   0.82468851\n",
      "  0.33602599  0.42846876  0.57720867  1.09431102 -0.21745662 -0.68806732\n",
      " -0.20651163  1.68868623  0.10433815  1.12861197  1.32303552 -1.33411344\n",
      "  0.70709638  0.31121299 -0.6812694  -0.30522845  1.13650442 -0.39194244\n",
      "  0.3943219   0.11911213  0.97983959 -1.13737443  1.06616874 -0.73921129\n",
      "  0.01516106 -1.17867087  1.3019907  -1.47699466  0.93314298 -1.79793017\n",
      "  2.29075529  1.38666379 -1.75055059  1.36082682 -0.28448656  0.86767735\n",
      "  1.16760387 -0.24230304  0.41799887 -0.21718325  1.62013351  1.15982428\n",
      "  0.35276159  1.53280949 -0.90691624 -1.68521219  0.65226821 -0.26705615\n",
      "  2.18791167  2.00630828 -1.33621318  1.13574182  0.6756737   1.11361194\n",
      " -0.67425689  0.3761127  -0.08156675  0.06647634  0.98027242  1.50837801\n",
      "  0.0059243  -0.56584815  1.57932146 -0.48774069  1.22161972 -0.65412426\n",
      " -1.04681754  0.40888826 -0.15770683 -0.97480446 -1.14733891  1.01168581\n",
      "  1.1537554  -0.61850048 -0.90868147 -0.60797475  0.22327868 -1.08982312\n",
      " -0.3191897  -0.64475553  0.20966508 -0.28822686 -0.2026778   0.05787225\n",
      "  0.07823256  0.2384766  -0.54970441  0.2615346   0.94929622 -0.9469159\n",
      "  0.64670702 -1.05748476  0.29468577  2.07740863  0.58308739 -0.31788455\n",
      " -0.89539245  1.301042    1.76975634  2.06716941 -1.07502547  0.22217598\n",
      " -0.14896567 -1.38267202 -0.6570132   0.36865617 -0.09750408 -0.57396991\n",
      " -1.17185914  0.51432649  1.64485546  0.38861727  1.69448054 -0.71488134\n",
      "  2.15524486 -0.41059269  0.70861609  0.92675315 -0.5091883   0.92933402\n",
      " -1.46375658 -1.80404287  1.1767692   0.01036885 -1.2185719   0.69647267\n",
      "  0.08093958  0.55059297 -0.30882208  1.12588009 -0.18638068 -0.07597897\n",
      "  0.96877939 -0.448862    0.91705525  1.71067697 -1.00336305  1.85914785\n",
      " -0.47364698  1.21627874 -1.29947351  1.39833181 -1.12572993  0.37916231\n",
      " -1.36496972 -0.12774709 -0.25789569  1.03405325 -1.02802819  0.18230997\n",
      "  0.92343821 -0.4057612  -0.74032636 -0.8206307   0.10065061  0.376449\n",
      " -0.29750114  0.63785652  0.91186548  0.00699604 -1.23557879 -1.21347783\n",
      " -0.12377688 -0.33385302 -0.83824817 -1.89311864  0.66498545  0.14715575\n",
      "  0.15202636  1.44757568  1.3298602  -0.54421213 -0.58286376  0.36402218\n",
      "  1.10894918  1.32589649  0.22977681  0.39804321 -1.54851833 -1.13703123\n",
      " -0.06941735 -0.38214702  0.36185881  0.2978934   0.31684382  0.77997509\n",
      " -1.32943166  0.47689202 -0.25478256 -0.71525581 -0.14552264  0.10690733\n",
      "  0.3585101  -0.62105685  0.04339874 -1.1095239   2.33091198  0.61668921\n",
      "  0.53805226 -0.34860437  0.34485943 -0.0366991  -1.28836043 -1.33380736\n",
      " -0.09134033 -0.92946017  0.98497392 -1.02663611  0.03888124 -0.93834855\n",
      " -0.32412146  0.04019723 -0.24354928  0.63391883 -1.76566805 -0.96215033\n",
      "  0.57447485  1.37983629  1.81072643  0.9976082  -1.2169347  -0.32275975\n",
      "  0.39970095  0.20741609  1.41017983 -0.34523272  1.0771035  -0.27890706\n",
      " -1.37219133 -0.55780432  0.78761681  0.73595521  0.42962512 -0.02932978\n",
      " -1.15673723 -0.87358114 -0.82445707 -0.54218262 -0.58049904 -0.05390409\n",
      "  0.41773548 -0.88284435 -1.1497907   0.63870405  0.70553945 -0.31496499\n",
      " -1.89549065  1.36474759 -1.15748221  0.09020125  0.13480909 -0.13890836\n",
      "  0.54913103  1.92863324  1.46419871 -0.36893825 -0.92763133 -1.34633616\n",
      " -0.02955212  1.12269531  0.37265787 -1.1283581  -0.04305582  1.25242997\n",
      "  1.52576931 -1.14398252 -1.14223585 -0.38213072 -0.84807984  0.09325969\n",
      "  0.85774751 -1.07860033  0.02771806  1.17649256 -0.558318   -1.0321295\n",
      "  1.27535435  0.64845845 -0.37817902  0.26192541 -0.49047879 -0.04284335\n",
      "  0.93008975 -0.71154965  2.15278335 -0.32397936  1.16229891  1.33114428\n",
      "  0.97682044  1.08100376  2.65251176  0.28011127  0.52401865 -0.3763492\n",
      " -0.21993983 -0.35215592  1.61008648 -0.53239789 -0.43086196 -0.23040061\n",
      " -0.47740148 -0.82031861  0.53311468 -0.78279548 -0.39654588  0.07214632\n",
      " -0.16372262  0.01193681  1.27100429 -0.20606447 -0.66218406 -1.24812833\n",
      "  0.44935022  0.04021779  1.38201546 -0.50706985  0.3885117   0.55014229\n",
      "  0.07213521  0.38894057  0.61896722 -0.01928299 -0.02123247  0.39150154\n",
      " -1.77424768 -0.38164335  0.38907128  1.47997825  0.4904538  -0.37223853\n",
      "  1.10072692  1.34412703  0.61528237  0.73682173 -0.29556567  1.61520176\n",
      "  0.50152254 -0.91843855 -0.36056464  0.73551916  0.53813763 -0.19607632\n",
      " -1.35229038 -1.41259897  0.22252234 -0.75834623 -0.34189013 -1.60725764\n",
      "  0.35909655  0.74427939 -0.47944383 -1.36579788  0.59929314 -0.71982848\n",
      "  1.29276919  0.31537885  0.71763631 -0.81638322  1.34742479 -0.55098796\n",
      " -0.32236849  0.05697083  0.7915867   0.81056106 -0.3833128   0.94603258\n",
      " -0.87386168 -0.37203157 -0.07083001 -0.78746754 -0.40328061  1.43410803\n",
      "  1.11080253 -1.78203936 -1.73696281 -0.23864724  1.13241719  0.16522046\n",
      "  0.13153659  0.07112237  1.83023219 -0.9724705   1.15459113  0.79728738\n",
      " -0.35889551 -0.91559962 -0.43505138 -1.14663575  1.90376778  0.14752176\n",
      " -0.92746397 -0.75742647  0.55239949 -0.20451632 -0.75085272 -1.0166587\n",
      "  1.54931682  0.17224121  1.04424257 -1.06208661 -1.52331715 -0.32072526\n",
      " -0.08462687  0.37717946  1.32375129  0.21666553  1.56894043 -0.12595406\n",
      " -0.64034216 -0.57717804  0.03609715 -0.3828461  -0.21857358  0.24368853\n",
      " -0.30419604 -0.01509479  0.55241368  0.24945588  0.39311256 -1.93062025\n",
      "  0.52709376  0.2298613  -0.5608614  -0.32458681  1.63259862  1.18184584\n",
      " -1.35781878  2.03095877  0.0048701  -0.73390582  1.26732063  0.15232247\n",
      "  0.29147282  0.66063695 -1.36010557 -0.2255693  -0.29296861 -1.18858897\n",
      "  1.40417895 -0.48749505  0.86872101 -1.33103624  1.62324725 -1.98602628\n",
      "  0.62291029 -0.2057356   0.64685261  1.34598861  1.39926521  1.11866727\n",
      "  0.27264222  0.46679269 -0.5169167   1.12574263  0.86267537 -1.33121945\n",
      "  0.1355171  -0.35676665  0.87031776  0.46939185  1.53802316  0.52706635\n",
      " -0.14219003  1.14379817  0.32732698 -2.03975201 -0.32754557  2.08687682\n",
      " -0.58160759 -2.97738679  0.68255157  1.51464218 -1.34344524 -0.21253092\n",
      " -1.07490251  0.52492799  1.47165989 -0.46943737  0.60617485 -1.4330439\n",
      "  0.08026658 -0.1025836  -0.88229698  0.520948    0.76929883  0.99043267\n",
      " -1.5951677   1.21528439  0.64983901  2.21798939  2.05585675 -0.72371909\n",
      "  1.63968145  0.45864881 -0.75181278 -0.66056608  0.60052091  1.03622811\n",
      "  1.70330655 -1.45877578 -0.17482168  0.33209248  0.61805765  0.50031618\n",
      " -0.66163441 -0.96108549  0.85675978  0.07960023 -0.49352384 -1.57733918\n",
      " -0.16531659 -1.85758888  0.74012858  0.70310827  0.79584935 -1.29095746\n",
      " -0.40712608  0.20872845 -0.55755532  1.16252655  0.26740217 -1.46455379\n",
      " -1.97564602  1.84259947  0.94976943  1.58770693 -1.48668852  1.57563476\n",
      " -1.00556218  0.23689812 -1.42419891 -0.14327443 -1.1334537   0.48924886\n",
      "  0.2820352  -0.04938607 -0.38055791  0.11722282 -2.17198745 -0.37468897\n",
      "  1.41868056  1.10994108 -1.38593461  0.11534954  0.37286164 -0.17486669\n",
      "  1.24292384  2.03021325 -0.13173889  1.83432858  1.72048609  2.08674414\n",
      "  0.60307109  0.2321619  -0.27507282  0.43270108  0.92906499  0.24787061\n",
      "  0.38162054 -0.15847983 -1.18438841 -0.95192882 -2.04717946  1.22833572\n",
      "  1.80314295 -1.11131377 -0.74213207 -1.74609848  1.55536467  0.60624423\n",
      " -0.89829705  1.23004433  1.70313216  1.02746412  0.68199457  0.71663372\n",
      " -0.32607554 -1.27718637 -0.11715074 -0.42379181  0.53118322 -0.37157832\n",
      "  0.24422209  2.50617752  1.03246986  0.66912128 -1.73374358  2.62279771\n",
      " -0.9350896   0.01101807  0.29527316 -1.14218414  1.19803434  0.85699991\n",
      "  0.16791465  0.74754444  1.60061351  1.60505758 -0.59330996 -0.34635728\n",
      " -0.94287309 -0.6856949   0.41054859  0.34215169 -1.38182004  2.10382027\n",
      " -1.25610851 -0.35582415 -0.77338313 -1.21758816  0.17326191 -0.63866471\n",
      " -0.46572953 -1.38209075  0.04903666  0.11643626 -1.42206263 -1.2367283\n",
      "  0.7028621   0.73705985 -0.20137994 -0.81344112 -0.28621833 -0.46117314\n",
      "  1.51556399 -0.41263712  0.17912411  1.20920741  0.50709129  0.76912676\n",
      " -0.58606931 -0.55058454 -0.26362395 -0.18860788  2.26418949  0.05487095\n",
      " -0.94510107  1.28034305  0.52988666 -1.05333198 -1.56805966  0.20134429\n",
      " -0.04669547 -0.76444595  1.60062522 -0.05132876 -0.3739016   0.05340647\n",
      "  1.3903787  -0.91015415  0.30272498  0.95724723 -0.84987684  0.38123476\n",
      "  2.9415077  -0.57277719  0.21890191 -0.60773346 -1.16216864 -1.07017192\n",
      " -0.35278251 -0.61853455 -1.14531839  0.23093047  0.40687727  1.31101483\n",
      "  0.42140654  0.0581148   0.47049846  1.48837992 -0.14088876  1.24738705\n",
      " -1.04186929  0.73681146  1.26505673 -1.36984352 -1.78407148 -0.55431782\n",
      "  0.99477443  0.20073816 -0.81774533  1.21201108  0.78664904 -0.32014066\n",
      "  0.59044901  0.19037977  0.94192194  0.93689918  0.66323006 -1.24781236\n",
      " -0.55373033 -1.01520656 -0.41351018  0.53647683  0.1095233   0.40516637\n",
      " -0.14324635  0.02754663 -0.08372526 -0.19151094  0.47122843  0.66089259\n",
      " -0.36143084  0.67583118  0.76875491  1.34149347]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "(array([ 93., 103., 105., 103.,  95.,  95., 110.,  79.,  99., 118.]),\n",
       " array([5.61810992e-04, 1.00382046e-01, 2.00202281e-01, 3.00022516e-01,\n",
       "        3.99842751e-01, 4.99662986e-01, 5.99483221e-01, 6.99303456e-01,\n",
       "        7.99123691e-01, 8.98943926e-01, 9.98764161e-01]),\n",
       " <BarContainer object of 10 artists>)"
      ]
     },
     "execution_count": 200,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 200
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-09-04T06:51:22.127424Z",
     "start_time": "2025-09-04T06:51:21.934662Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# rand 均匀分布的随机数，在[0,1.13模块编程.12package)区间内均匀分布\n",
    "data1 = np.random.rand(1000) # 生产1000个在[0,1.13模块编程.12package)区间的数\n",
    "plt.hist(data1)\n",
    "\n",
    "# random 均匀分布的随机数，在[0,1.13模块编程.12package)区间内均匀分布\n",
    "data2 = np.random.random(5)\n",
    "print(data2)\n",
    "\n",
    "# 随机数，在[0,1.13模块编程.12package)区间内均匀分布,形状是2行3列\n",
    "data3 = np.random.random(size = (2, 3))\n",
    "print(data3)\n",
    "\n",
    "# 跟data3生成的ndarray形状一致，注意参数格式不一样\n",
    "data4 = np.random.rand(2,3)\n",
    "print(data4)"
   ],
   "id": "a1fa0b6830f8a05c",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.92192414 0.38762988 0.05047847 0.73299272 0.12937083]\n",
      "[[0.61619019 0.48713061 0.31191539]\n",
      " [0.79151327 0.1482705  0.8199229 ]]\n",
      "[[0.0634905  0.4698068  0.54884367]\n",
      " [0.91172232 0.31948523 0.27614259]]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "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eEpKSjRu3Dj1799fAwYM0IIFC9TQ0KDx48e310gAAMAS7RYo99xzj/7zn/9o+vTp8nq9uu6661RRUXHOC2fbksPh0IwZM855OgmRx1q3Dda5bbDObYe1bhs2rHOcOZ/3+gAAALQhvosHAABYh0ABAADWIVAAAIB1CBQAAGCdCy5QFi9erO7duyspKUm5ubnatm3btx7/6quvqlevXkpKSlKfPn20YcOGNpo09oWz1suWLdPNN9+sLl26qEuXLvJ4PN/57wZfCffv9Flr1qxRXFycRowYEd0BO4hw17m+vl5FRUXKzMyUw+HQlVdeyX8/zlO4a71gwQL96Ec/UnJysrKzszV58mSdPHmyjaaNTe+++66GDRumrKwsxcXFad26dd95n82bN+uGG26Qw+HQD3/4Q61YsSK6Q5oLyJo1a0xiYqJ58cUXzT//+U8zceJEk5aWZnw+X4vHv//++6ZTp05m7ty5Zvfu3WbatGmmc+fO5qOPPmrjyWNPuGt97733msWLF5udO3eaPXv2mPvuu884nU7z+eeft/HksSXcdT6rtrbW/OAHPzA333yzGT58eNsMG8PCXefGxkbTv39/M2TIEPPee++Z2tpas3nzZrNr1642njz2hLvWq1atMg6Hw6xatcrU1taat956y2RmZprJkye38eSxZcOGDebxxx83r732mpFk1q5d+63HHzhwwFx00UWmpKTE7N692yxatMh06tTJVFRURG3GCypQBgwYYIqKioI/nzlzxmRlZZny8vIWjx89erQZOnRoyL7c3FzzwAMPRHXOjiDctf6606dPm5SUFLNy5cpojdghtGadT58+bQYOHGj++Mc/mnHjxhEo5yHcdV6yZIm54oorzKlTp9pqxA4j3LUuKioyt99+e8i+kpISM2jQoKjO2ZGcT6BMmTLFXH311SH77rnnHpOfnx+1uS6Yp3hOnTqlmpoaeTye4L74+Hh5PB5VVVW1eJ+qqqqQ4yUpPz//G4/HV1qz1l934sQJNTU1KT09PVpjxrzWrvPMmTOVkZGhCRMmtMWYMa816/z6668rLy9PRUVFcrlcuuaaazR79mydOXOmrcaOSa1Z64EDB6qmpib4NNCBAwe0YcMGDRkypE1mvlC0x+NhTHybcSR88cUXOnPmzDmfVOtyufTxxx+3eB+v19vi8V6vN2pzdgStWeuve+yxx5SVlXXO/yDw/7Vmnd977z298MIL2rVrVxtM2DG0Zp0PHDigTZs2qaCgQBs2bND+/fv10EMPqampSTNmzGiLsWNSa9b63nvv1RdffKHBgwfLGKPTp0/rl7/8pX7961+3xcgXjG96PAwEAvrvf/+r5OTkiP+ZF8wVFMSOOXPmaM2aNVq7dq2SkpLae5wO49ixYxo7dqyWLVumSy+9tL3H6dCam5uVkZGh559/Xv369dM999yjxx9/XEuXLm3v0TqczZs3a/bs2Xruuee0Y8cOvfbaa1q/fr2eeuqp9h4N39MFcwXl0ksvVadOneTz+UL2+3w+ud3uFu/jdrvDOh5fac1anzVv3jzNmTNHb7/9tq699tpojhnzwl3nf/3rX/r00081bNiw4L7m5mZJUkJCgvbu3asePXpEd+gY1Jq/z5mZmercubM6deoU3Ne7d295vV6dOnVKiYmJUZ05VrVmrcvKyjR27Fj94he/kCT16dNHDQ0NKiws1OOPP674eP5/eCR80+NhampqVK6eSBfQFZTExET169dPlZWVwX3Nzc2qrKxUXl5ei/fJy8sLOV6SNm7c+I3H4yutWWtJmjt3rp566ilVVFSof//+bTFqTAt3nXv16qWPPvpIu3btCm533323brvtNu3atUvZ2dltOX7MaM3f50GDBmn//v3BAJSkTz75RJmZmcTJt2jNWp84ceKcCDkbhoavmouYdnk8jNrLby20Zs0a43A4zIoVK8zu3btNYWGhSUtLM16v1xhjzNixY83UqVODx7///vsmISHBzJs3z+zZs8fMmDGDtxmfp3DXes6cOSYxMdH8+c9/NocPHw5ux44da69fISaEu85fx7t4zk+463zw4EGTkpJiiouLzd69e82bb75pMjIyzKxZs9rrV4gZ4a71jBkzTEpKinn55ZfNgQMHzN/+9jfTo0cPM3r06Pb6FWLCsWPHzM6dO83OnTuNJDN//nyzc+dO89lnnxljjJk6daoZO3Zs8PizbzN+9NFHzZ49e8zixYt5m3GkLVq0yHTr1s0kJiaaAQMGmK1btwZvu+WWW8y4ceNCjn/llVfMlVdeaRITE83VV19t1q9f38YTx65w1vryyy83ks7ZZsyY0faDx5hw/07/LwLl/IW7zh988IHJzc01DofDXHHFFebpp582p0+fbuOpY1M4a93U1GSeeOIJ06NHD5OUlGSys7PNQw89ZL788su2HzyGvPPOOy3+N/fs2o4bN87ccsst59znuuuuM4mJieaKK64wy5cvj+qMccZwDQwAANjlgnkNCgAAiB0ECgAAsA6BAgAArEOgAAAA6xAoAADAOgQKAACwDoECAACsQ6AAAADrECgAAMA6BAoAALAOgQIAAKxDoAAAAOv8P0faPyfLT0tdAAAAAElFTkSuQmCC"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 204
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
